/**
 * @author Laboratio Av I
 * @since 18/04/2012 14:03:56
 */
package ar.edu.utn.frgp.banco.dao.impl;

import java.sql.Connection;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;



import ar.edu.utn.frgp.banco.dao.ServicioDao;
import ar.edu.utn.frgp.banco.dao.connection.ConnectionHandler;
import ar.edu.utn.frgp.banco.dao.connection.IConnectionHandler;



import ar.edu.utn.frgp.banco.domain.Servicios;

import ar.edu.utn.frgp.banco.exceptions.DataAccessException;


public class ServicioDaoImpl implements ServicioDao {

	public Servicios obtenerServicio(int idservicio) throws DataAccessException {
		

		 Servicios servicio = null;
	     Statement st = null;
        ResultSet rs = null;
		
		IConnectionHandler handler = new ConnectionHandler();
		Connection cn = handler.getConnection();
		
		try {
			st = cn.createStatement();
			rs = st.executeQuery("SELECT * FROM servicios where servicios.idservicio = " + idservicio);
			
			while (rs.next()) {
				System.out.println("Existe un servicio con ese codigo y es el siguiente: ");
				
				servicio = new Servicios();
				
				servicio.setIdservicio(idservicio);
				servicio.setDescripcion(rs.getString("descripcion"));
				servicio.setMontofijo(rs.getDouble("montofijo"));
		
				System.out.println("");
				System.out.println("CODIGO: " + rs.getInt("idservicio"));
				System.out.println("DESCRIPCION: " + rs.getString("descripcion"));
				System.out.println("ESTADO: " + rs.getDouble("montofijo"));
				System.out.println("");
				
			}
		} catch (SQLException e) {
			System.out.println("Error en algo");
			e.printStackTrace();			
		} finally {
			handler.closeResources(st, cn);
		}
		return servicio;
	}

	public void altaServicio(Servicios servicio) throws DataAccessException {

		PreparedStatement ps = null;
		
		IConnectionHandler handler = new ConnectionHandler();
		Connection cn = handler.getConnection();
		
		try {
			ps = cn.prepareStatement("INSERT INTO servicios VALUES(?,?,?)");
			
			ps.setInt   (1, servicio.getIdservicio());
			ps.setString(2, servicio.getDescripcion());
			ps.setDouble (3, servicio.getMontofijo());
			
			ps.executeUpdate();
			
		} catch (SQLException e) {
			throw new DataAccessException(e);
		} finally {
			handler.closeResources(ps, cn);
		}

	}
	
	public List<Servicios> traerTodo() throws DataAccessException {
		  Statement st = null;
	      ResultSet rs = null;
			
			IConnectionHandler handler = new ConnectionHandler();
			Connection cn = handler.getConnection();
			
			List<Servicios> servicios = new ArrayList<Servicios>();
			
			try {
				st = cn.createStatement();
				rs = st.executeQuery("SELECT * FROM servicios");
				
				Servicios se = null;
				
				while (rs.next()) {
					
					se = new Servicios();
					
					se.setIdservicio(rs.getInt("idservicio"));
					se.setDescripcion(rs.getString("descripcion"));
					se.setMontofijo(rs.getDouble("montofijo"));
					
					servicios.add(se);
				}
						
							
			} catch (SQLException e) {
				System.out.println("Error al crear tablas.");
				e.printStackTrace();			
			} finally {
				handler.closeResources(st, cn);
			}
		return servicios;
	}

	@Override
	public Servicios obtenerUnServicio(int codigoServicio)throws DataAccessException {
		Servicios se = null;
		Statement st = null;
		ResultSet rs = null;
		
		IConnectionHandler handler = new ConnectionHandler();
		Connection cn = handler.getConnection();
		
		try {
			st = cn.createStatement();
			rs = st.executeQuery("SELECT * FROM servicios Where servicios.idservicio = " + codigoServicio );
			
			
			while (rs.next()) {
				se = new Servicios();
				
				se.setIdservicio(rs.getInt("idservicio"));
				se.setDescripcion(rs.getString("descripcion"));
				se.setMontofijo(rs.getDouble("montofijo"));
				
				
			}
			
		} catch (SQLException e) {
			throw new DataAccessException(e);
		} finally {
			handler.closeResources(rs, st, cn);
		}
		return se;
	
	}


}